package com.lyshop.guiyingshanding.qcloud;

import android.content.Context;

import androidx.annotation.Nullable;

import com.tencent.cos.xml.CosXmlService;
import com.tencent.cos.xml.CosXmlServiceConfig;
import com.tencent.cos.xml.exception.CosXmlClientException;
import com.tencent.cos.xml.exception.CosXmlServiceException;
import com.tencent.cos.xml.listener.CosXmlResultListener;
import com.tencent.cos.xml.model.CosXmlRequest;
import com.tencent.cos.xml.model.CosXmlResult;
import com.tencent.cos.xml.transfer.COSXMLUploadTask;
import com.tencent.cos.xml.transfer.TransferConfig;
import com.tencent.cos.xml.transfer.TransferManager;
import com.lyshop.guiyingshanding.utils.LogUtil;

public class QCloudUtil {

    // 存储桶所在地域简称，例如广州地区是 ap-guangzhou
    String region = "ap-beijing";

    public static void toCos(Context context, boolean isFront, String region, String srcPath, String bucket, String tmpSecretId, String tmpSecretKey, String sessionToken, long startTime, long endTime, CosXmlResultListener listener) {
        // 存储桶所在地域简称，例如广州地区是 ap-guangzhou
// 创建 CosXmlServiceConfig 对象，根据需要修改默认的配置参数
        CosXmlServiceConfig serviceConfig = new CosXmlServiceConfig.Builder()
                .setRegion(region)
                .isHttps(true) // 使用 HTTPS 请求, 默认为 HTTP 请求
                .builder();

// 初始化 COS Service，获取实例
        MySessionCredentialProvider mySessionCredentialProvider = new MySessionCredentialProvider(tmpSecretId, tmpSecretKey, sessionToken, startTime, endTime);
        CosXmlService cosXmlService = new CosXmlService(context,
                serviceConfig, mySessionCredentialProvider);

        // 初始化 TransferConfig，这里使用默认配置，如果需要定制，请参考 SDK 接口文档
        TransferConfig transferConfig = new TransferConfig.Builder().build();
        // 初始化 TransferManager
        TransferManager transferManager = new TransferManager(cosXmlService,
                transferConfig);

        // 存储桶名称，由 bucketname-appid 组成，appid 必须填入，可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
//        String bucket = "examplebucket-1250000000";

        String cosPath = "shengniu/card/" + (isFront ? "frontUrl" : "backUrl") + System.currentTimeMillis() + ".jpg"; //对象在存储桶中的位置标识符，即称对象键
//        String srcPath = new File(context.getCacheDir(), "exampleobject")
//                .toString(); //本地文件的绝对路径

// 上传文件
        COSXMLUploadTask cosxmlUploadTask = transferManager.upload(bucket, cosPath,
                srcPath, null);

        //设置返回结果回调
        cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
            @Override
            public void onSuccess(CosXmlRequest request, CosXmlResult result) {
                listener.onSuccess(request, result);
                COSXMLUploadTask.COSXMLUploadTaskResult uploadResult =
                        (COSXMLUploadTask.COSXMLUploadTaskResult) result;
                String accessUrl = uploadResult.accessUrl;
                LogUtil.d("上传地址" + accessUrl);
            }


            // 如果您使用 kotlin 语言来调用，请注意回调方法中的异常是可空的，否则不会回调 onFail 方法，即：
            // clientException 的类型为 CosXmlClientException?，serviceException 的类型为 CosXmlServiceException?
            @Override
            public void onFail(CosXmlRequest request,
                               @Nullable CosXmlClientException clientException,
                               @Nullable CosXmlServiceException serviceException) {
                listener.onFail(request, clientException, serviceException);
            }
        });


    }



}
